﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace vudu.Logica.Clases
{
    public class InicioSistema
    {
        #region Private Member Variables

        private Rol _usuarioActual;

        #endregion

        #region constantes

        private const int _cantMaxPalabra = 50;
        private const int _canMinPalabra = 13;
        private const string _dominioEst = "@est.vudu.com";
        private const string _dominioProf = "@prof.vudu.com";
        private const string _dominioEsc = "@esc.vudu.com";
        private const string _dominioUniv = "@univ.vudu.com";

        #endregion

        #region Constructors

        public InicioSistema()
        {
            _usuarioActual = new Rol();
        }

        #endregion

        #region Public Properties

        public Rol UsuarioActual
        {
            get { return _usuarioActual; }
            set { _usuarioActual = value; }
        }

        #endregion

        #region Public Methods

        public bool RegistrarUsuarioBD(Rol usuarioActual)
        {
            return true;
        }

        /// <summary>
        /// Invoca el metodo de buscar el rol que contenga dicho nick y pass,
        /// </summary>
        /// <param name="nick">
        /// el correo del usuario que se esta loegando
        /// </param>
        /// <param name="pass">
        /// la contraseña del usuario que se esta logeando
        /// </param>
        /// <returns>si no lo consigue, retorna null</returns>

        public Rol ConsultarUsuarioBD(string nick, string pass)
        {
            return (_usuarioActual.UsuarioActual(nick, pass));
        }

        /// <summary>
        /// Valido que los campos correo y password no sean vacios
        /// o que no exedan el limite de 50 caracteres
        /// </summary>
        /// <param name="correo">Correo a validar</param>
        /// <param name="pass">contraseña a validad</param>
        /// <returns>
        /// true si los parametros cumplen con la condicion y
        /// false si no
        /// </returns>
        public bool ValidarDatosIngresados(string correo, string pass)
        {
            if ((EsCorreoCorrecto(correo)) && (EsPassCorrecto(pass)))
                return true;
            else
                return false;
        }

        public bool TerminaEnDominio(string correo)
        {
            if ((correo.EndsWith(_dominioEst)) || (correo.EndsWith(_dominioProf))
                || (correo.EndsWith(_dominioEsc)) || (correo.EndsWith(_dominioUniv)))
                return true;
            else
                return false;
        }
        public bool EsCorreoCorrecto(string correo)
        {
            if ((correo.Length > _canMinPalabra) && (correo.Length <= _cantMaxPalabra) && (TerminaEnDominio(correo)))
                return true;
            else
                return false;
        }

        public bool EsPassCorrecto(string pass)
        {
            if ((pass.Length > 0) && (pass.Length <= _cantMaxPalabra))
                return true;
            else
                return false;
        }

        public string RecuperarContrasenia(string correo)
        {
            return " ";
        }

        /// <summary>
        /// en funcion al objeto rol, se evalua que tipo de usuario es 
        /// dependiento el usuario al cual esta asociado
        /// </summary>
        /// <param name="rol"></param>
        /// <returns>
        /// retorna un numero que define el tipo de usuario
        /// 1: estudiante
        /// 2: profesor
        /// 3: escuela
        /// 4: universidad
        /// </returns>
        public int DefinirUsuario(Rol rol)
        {
            int opcion = 0;

            if (rol.FkEst != 0)//es un usuario estudiante, retorno 1
                opcion = 1;
            if (rol.FkProf != 0)//es un usuario profesor, retorno 2
                opcion = 2;
            if (rol.FkEsc != 0)//es un usuario escuela, retorno 3
                opcion = 3;
            if (rol.FkUniv != 0)//es un usuario universidad, retorno 4
                opcion = 4;
            return opcion;
        }

        #endregion
    }
}